<script>
	//1.DNS 解析（查询）：
	// 将域名地址解析 ip 地址(**域名的用处是方便记录,缺点是浪费性能**)
	// - 浏览器 DNS 缓存-> 计算机 DNS 缓存-> 路由器 DNS 缓存-> 网络运营商 DNS 缓存-> 递归查询
</script>
<script>
	//2.TCP 链接：TCP 三次握手  ===> 建立连接
	/*
  - 客户端发送服务端：我准备好了，请你准备一下
  - 服务端发送客户端：我也准备好了，请你确认一下
  - 客户端发送服务端：确认完毕
  */
</script>
<script>
	/*
  3. 发送请求
- 将请求报文发送过去
  4. 返回响应
- 将响应报文发送过来 */
</script>
<script>
	// 5.解析渲染页面(首次渲染)
	/*
  - 遇到 HTML，调用 HTML 解析器，解析成 DOM 树
  - 遇到 CSS，调用 CSS 解析器，解析成 CSSOM 树
        注意： HTML 解析，CSS 解析互不干扰
  - 遇到 JS，调用 JS 解析器（JS 引擎），解析 JS 代码
    - 可能要修改元素节点，重新调用 HTML 解析器，解析更新DOM 树
    - 可能要修改样式节点，重新调用 CSS 解析器，解析更新 CSSOM 树
  - 将 DOM + CSSOM = Render Tree（渲染树）
  - layout 布局：计算元素的位置和大小信息(计算布局排版)
  - render 渲染：将颜色/文字/图片等渲染上去(绘制页面内容)
  */
	// 首次渲染流程:主线程代码执行结束->清空微任务队列->GUI线程渲染->执行宏任务
</script>
<script>
	// 断开链接：TCP 四次挥手
	// (断开请求链接 2 次, 断开响应链接 2 次)
	/*
  - 客户端发送服务端：请求数据发送完毕，可以断开了
  - 服务端发送客户端：请求数据接受完毕，可以断开了
  - 服务端发送客户端：响应数据发送完毕，可以断开了
  - 客户端发送服务端：响应数据接受完毕，可以断开了 */
</script>
